Asynchronous serial data communication is a common method for sending data between electronic devices. Examples of devices employing asynchronous serial data communications include computers, Global Positioning System (“GPS”) navigation units, and telecommunications radio receivers. Asynchronous serial data communications systems employ two or more “symbols”, or recognizable states of the data line, and convey one or more bits of binary data with each symbol.
In a common asynchronous serial data format used to transmit binary data, two data symbol values are used, corresponding to a data line held at one of two levels (“high” and “low”). During idle periods, the data line is held at a specific level, which may be either high or low according to the convention of the system. To indicate the start of a data sequence, a “start bit” is transmitted with the opposite level. A fixed number of data bits follow, usually eight bits from least significant bit (“LSB”, bit 0) to most significant bit (“MSB”, bit 7), with the two data levels (high and low) mapped to the two bit values (one and zero) according to the convention of the system. Following bit 7, a final “stop bit” is sent with a level equal to the idle level. The level for each of bit, including the start and stop bits, is held on the data line for an identical time interval t. The receiving device should sample the data line near times 1.5 t, 2.5 t, 3.5 t . . . 8.5 t after the leading edge of the start bit. The interval t must be known precisely, because the receiving device must identify sample times without any time markers after the leading edge of the start bit. To ensure that the data rates used by the sending and receiving devices agree, prior art devices participating in such communications require precision timing references, such as crystal oscillators.
Asynchronous serial data is usually transmitted at one of a standard set of data rates, with each bit held for an interval such as 1/2400 second, 1/4800 second, 1/9600 second, etc. Thus, in addition to having a precision timing reference, the receiving device must know the data rate employed by the sending device. In some prior art, the sending and receiving devices operate at a fixed data rate. In other prior art, often known as “autobaud”, a receiving device can automatically discriminate among the standard set of data rates, to identify and match the data rate employed by a sending device.
Many known autobaud techniques, such as U.S. Pat. No. 6,198,785 to Flynn (2001) and U.S. Pat. No. 6,157,689 to Petty et al (2000), require a measurement of the exact duration of the start bit, and therefore require an observational timing capacity with high temporal resolution. U.S. Pat. No. 6,163,586 to Hongbin Hao et al (2000) requires that a remote sending device transmit a very specific sequence of characters, and then discriminates among a standard set of expected data rates. Thus, it lacks the capacity of intermediate calibration adjustments to the effective data rate, to compensate for an imprecise timing reference at either the sending or receiving device. U.S. Pat. No. 5,008,902 to Key et al (1991), and U.S. Pat. No. 5,072,407 to Gutz et al (1991), test a standard set of expected data rates that differ by a fixed multiplier, and like U.S. Pat. No. 6,163,586, cannot make intermediate calibration adjustments to the effective data rate. U.S. Pat. No. 5,490,209 to Kennedy et al (1996) performs a series of true/false tests for expected standard baud rates, and is limited to testing for a single hypothesized data rate per received character.